package main

/*
	同构字符串
给定两个字符串s和t，判断它们是否是同构的。
如果s中的字符可以按某种映射关系替换得到t，那么这两个字符串是同构的。
每个出现的字符都应当映射到另一个字符，同时不改变字符的顺序。
不同字符不能映射到同一个字符上，相同字符只能映射到同一个字符上，字符可以映射到自己本身。

示例 1:
输入：s = "egg", t = "add"
输出：true
示例 2：
输入：s = "foo", t = "bar"
输出：false
 */

// 两个映射表保存信息
func isIsomorphic(s string, t string) bool {
	l1 := len(s)
	l2 := len(t)
	if l1 != l2 {
		return false
	}
	s2t := map[byte]byte{}
	t2s := map[byte]byte{}

	for i := 0; i < l1; i++ {
		a1, ok1 := s2t[s[i]]
		a2, ok2 := t2s[t[i]]

		if ok1 && ok2 {
			if a1 != t[i] || a2 != s[i] {
				return false
			}
		} else if !ok1 && !ok2 {
			s2t[s[i]] = t[i]
			t2s[t[i]] = s[i]
		} else {
			return false
		}
	}
	return true
}

func main() {
	
}
